package com.liqi.display.config;

import com.liqi.display.common.Constants;
import com.liqi.display.utils.DataUtil;
import com.liqi.display.utils.DateUtil;
import com.liqi.display.utils.RedisUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 基础数据生成
 */
@Component
@Lazy(false)
public class AutoLoadConfig implements InitializingBean {

    private static final Logger logger = LoggerFactory.getLogger(AutoLoadConfig.class);

    @Autowired
    private RedisUtil redisUtil;


    @Override
    public void afterPropertiesSet() throws Exception {
        logger.info("初始化数据开始......");
        init();
        logger.info("初始化数据完成......");
    }

    public void init() {

        //预约基础数
        redisUtil.set(Constants.BASE_ORDER_NUM,"0");

        //取号基础数量
        redisUtil.set(Constants.BASE_TAKE_NUM,"0");

        //现场取号基础数量
        redisUtil.set(Constants.BASE_XC_TAKE_NUM,"0");

        //预约取号基础数量
        redisUtil.set(Constants.BASE_YY_TAKE_NUM,"0");

        //受理基础数量
        redisUtil.set(Constants.BASE_ACCEPT_NUM,"0");

        //好评数基础数量
        redisUtil.set(Constants.BASE_SATISFACTION_NUM,"0");

        //========================星级初始化数============================

        //设置办理方式
        redisUtil.set(Constants.BASE_ACCEPT_METHOD_NUM,"0");

        //设置取票方式
        redisUtil.set(Constants.BASE_TAKE_METHOD_NUM,"0");
        //设置受理量
        redisUtil.set(Constants.BASE_ACCEPT_NUM,"0");//专区受理量基础数据

        //=======================设置专区和窗口映射关系，存储到redis============================
        Map<String,Integer> map = new HashMap<>();
        map.put("1",0);//1号窗口
        map.put("2",0);//2号窗口
        map.put("3",0);//3号窗口
        map.put("4",0);//4号窗口
        //人社专区
        redisUtil.hashSet(Constants.ZONE_TAG,Constants.RS_ZONE,map);
        map = new HashMap<>();
        map.put("5",0);//5号窗口
        map.put("6",0);//6号窗口
        map.put("7",0);//7号窗口
        map.put("8",0);//8号窗口
        redisUtil.hashSet(Constants.ZONE_TAG,Constants.GA_ZONE,map);
        map = new HashMap<>();
        map.put("9",0);//9号窗口
        map.put("10",0);//10号窗口
        map.put("11",0);//11号窗口
        map.put("12",0);//12号窗口
        redisUtil.hashSet(Constants.ZONE_TAG,Constants.YB_ZONE,map);
        map = new HashMap<>();
        map.put("13",0);//13号窗口
        map.put("14",0);//14号窗口
        map.put("15",0);//15号窗口
        map.put("16",0);//16号窗口
        redisUtil.hashSet(Constants.ZONE_TAG,Constants.SW_ZONE,map);

        map = new HashMap<>();
        map.put("17",0);//17号窗口
        map.put("18",0);//18号窗口
        map.put("19",0);//19号窗口
        map.put("20",0);//20号窗口
        redisUtil.hashSet(Constants.ZONE_TAG,Constants.MZ_ZONE,map);

        map = new HashMap<>();
        map.put("21",0);//21号窗口
        map.put("22",0);//21号窗口
        map.put("23",0);//21号窗口
        map.put("24",0);//21号窗口
        redisUtil.hashSet(Constants.ZONE_TAG,Constants.GJJ_ZONE,map);

        map = new HashMap<>();
        map.put("25",0);//25号窗口
        map.put("26",0);//26号窗口
        map.put("27",0);//27号窗口
        map.put("28",0);//28号窗口
        redisUtil.hashSet(Constants.ZONE_TAG,Constants.BDC_ZONE,map);

        map = new HashMap<>();
        map.put("29",0);//29号窗口
        map.put("30",0);//30号窗口
        map.put("31",0);//31号窗口
        map.put("32",0);//32号窗口
        redisUtil.hashSet(Constants.ZONE_TAG,Constants.QZH_ZONE,map);

        map = new HashMap<>();
        map.put("33",0);//33号窗口
        map.put("34",0);//34号窗口
        map.put("35",0);//35号窗口
        map.put("36",0);//36号窗口
        redisUtil.hashSet(Constants.ZONE_TAG,Constants.SZH_ZONE,map);
        //=======================================================

        //设置前8事项的办理数
        for(String key:DataUtil.getItemData().keySet()) {
            String value = DataUtil.getItemData().get(key).toString();
            redisUtil.hashSet(DateUtil.format(new Date(), Constants.MONTH), Constants.ITEM_TOP_EIGHT, value);
        }
        //======================放件人类型==========================
        redisUtil.set(Constants.BASE_RECEIVE_PUBLIC_TYPE,"0");//办事人员
        redisUtil.set(Constants.BASE_RECEIVE_STAFF_TYPE,"0");//工作人员
    }
}
